import {
	apiHost,
	apiBaseUrl
} from "../config/index.js"

// 封装请求
const request = (url, data, type, loading) => {
	// 请求头
	const header = {
		'content-type': 'application/json;charset=UTF-8',
		'service-code': 'H5',
		'client-type': 'alipay',
	};
	// 设置 tikcer
	// 自动添加Token(从本地缓存获取)
	const userInfo = uni.getStorageSync('userInfo'); // 从缓存读取用户信息
	//若存在token，则添加到请求头中
	if (userInfo && userInfo.token) {
		header.ticket = userInfo.token; // 后端可能用ticket字段验证身份
	}
	// 请求链接
	let reqUrl = url;
	console.log('初始url值:', url)
	// 兼容 mock 数据（若URL以/mock开头，则不拼接基础路径）
	if (!url.startsWith('/mock')) {
		// 若URL不是完整链接（不含http），则拼接基础路径
		reqUrl = /http/.test(url) ? url : apiHost + apiBaseUrl + url
		// console.log('进入拼接逻辑')
		// reqUrl = 'http://192.168.1.229:8000' + apiBaseUrl + url;
		console.log('拼接后reqUrl:', reqUrl)
	}
	return new Promise(function(resolve, reject) {
		uni.request({ // 调用uni-app的请求API
			url: reqUrl, // 最终请求地址
			method: 'post',
			data: data, // 发送给后端的数据
			header: header,
			success: function(res) {
				const {
					data
				} = res; // 解构后端返回的数据
				// 未登录
				if (data.code == 9000) {
					uni.showToast({
						title: data.message ? data.message : '登录失效,请重新登录',
						icon: 'none',
						success: (res) => {
							// 清除缓存并跳转到登录页
							uni.clearStorage()
							setTimeout(function() {
								uni.reLaunch({
									url: "/pages/login/login"
								})
							}, 1000);
						}
					})
				} else {
					// 正常响应：将数据传递给调用者
					resolve(res.data)
				}
			},
			fail: function(err) { // 请求失败回调
				console.log(err)
				uni.showToast({
					title: '网络异常,请稍后重试',
					icon: 'none'
				})
				reject(err)
			},
			complete: function() {}
		})

	})
}
export default request;